﻿#pragma warning disable IDE1006
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WUDI.ECharts.Polar.Tooltip.AxisPointer
{
	/// <summary>
	/// 坐标轴指示器的文本标签。
	/// </summary>
	public class Label
	{

		/// <summary>
		/// 是否显示文本标签
		/// <para>
		/// 如果 tooltip.axisPointer.type
		/// </para>
		/// <para>
		/// #tooltip.axisPointer.type 设置为 cross 则默认显示标签，否则默认不显示
		/// </para>
		/// </summary>
		public dynamic show { get; set; }  = false;

		/// <summary>
		/// 文本标签中数值的小数点精度。默认根据当前轴的值自动判断。也可以指定如 2 表示保留两位小数。
		/// </summary>
		public dynamic precision { get; set; }  = "auto";

		/// <summary>
		/// 文本标签文字的格式化器
		/// <para>
		/// 如果为 string，可以是例如
		/// </para>
		/// <para>
		/// formatter: some text {value} some text，其中 {value} 会被自动替换为轴的值
		/// </para>
		/// <para>
		/// {Object} params.value: 轴当前值，如果 axis.type 为 category 时，其值为 axis.data 里的数值
		/// </para>
		/// <para>
		/// 如果 axis.type 为 time，其值为时间戳
		/// </para>
		/// <para>
		/// {Array.} params.seriesData: 一个数组，是当前 axisPointer 最近的点的信息，每项内容为
		/// </para>
		/// <para>
		/// {string} params.axisDimension: 轴的维度名，例如直角坐标系中是 x、y，极坐标系中是 radius、angle
		/// </para>
		/// <para>
		/// {number} params.axisIndex: 轴的 index，0、1、2、...
		/// </para>
		/// <para>
		/// 显示的 string
		/// </para>
		/// <para>string/Function</para>
		/// </summary>
		public dynamic formatter { get; set; } 

		/// <summary>
		/// label 距离轴的距离。
		/// </summary>
		public dynamic margin { get; set; }  = 3;

		/// <summary>
		/// 文字的颜色。
		/// </summary>
		public dynamic color { get; set; }  = "#fff";

		/// <summary>
		/// 文字字体的风格。
		/// normal
		/// italic
		/// oblique
		/// </summary>
		public WUDI.ECharts.FontStyle fontStyle { get; set; }  = WUDI.ECharts.FontStyle.normal;

		/// <summary>
		/// 文字字体的粗细
		/// <para>
		/// normal
		/// </para>
		/// <para>
		/// bold
		/// </para>
		/// <para>
		/// bolder
		/// </para>
		/// <para>
		/// lighter
		/// </para>
		/// <para>
		/// 100 | 200 | 300 | 400...
		/// </para>
		/// </summary>
		public WUDI.ECharts.FontWeight fontWeight { get; set; }  = WUDI.ECharts.FontWeight.normal;

		/// <summary>
		/// 文字的字体系列
		/// <para>
		/// 还可以是 serif , monospace, Arial, Courier New, Microsoft YaHei, ...
		/// </para>
		/// </summary>
		public dynamic fontFamily { get; set; }  = "sans-serif";

		/// <summary>
		/// 文字的字体大小。
		/// </summary>
		public dynamic fontSize { get; set; }  = 12;

		/// <summary>
		/// 行高。
		/// </summary>
		public dynamic lineHeight { get; set; } 

		/// <summary>
		/// 文字块的宽度
		/// <para>
		/// 一般不用指定，不指定则自动是文字的宽度
		/// </para>
		/// <para>
		/// 在想做表格项或者使用图片（参见 backgroundColor）时，可能会使用它
		/// </para>
		/// <para>
		/// 注意，文字块的 width 和 height 指定的是内容高宽，不包含 padding
		/// </para>
		/// <para>
		/// width 也可以是百分比字符串，如 100%
		/// </para>
		/// <para>
		/// 表示的是所在文本块的 contentWidth（即不包含文本块的 padding）的百分之多少
		/// </para>
		/// <para>
		/// 之所以以 contentWidth 做基数，因为每个文本片段只能基于 content box 布局
		/// </para>
		/// <para>
		/// 如果以 outerWidth 做基数，则百分比的计算在实用中不具有意义，可能会超出
		/// </para>
		/// <para>
		/// 注意，如果不定义 rich 属性，则不能指定 width 和 height
		/// </para>
		/// </summary>
		public dynamic width { get; set; } 

		/// <summary>
		/// 文字块的高度
		/// <para>
		/// 一般不用指定，不指定则自动是文字的高度
		/// </para>
		/// <para>
		/// 在使用图片（参见 backgroundColor）时，可能会使用它
		/// </para>
		/// <para>
		/// 注意，文字块的 width 和 height 指定的是内容高宽，不包含 padding
		/// </para>
		/// <para>
		/// 注意，如果不定义 rich 属性，则不能指定 width 和 height
		/// </para>
		/// </summary>
		public dynamic height { get; set; } 

		/// <summary>
		/// 文字本身的描边颜色。
		/// </summary>
		public dynamic textBorderColor { get; set; }  = "transparent";

		/// <summary>
		/// 文字本身的描边宽度。
		/// </summary>
		public dynamic textBorderWidth { get; set; }  = 0;

		/// <summary>
		/// 文字本身的阴影颜色。
		/// </summary>
		public dynamic textShadowColor { get; set; }  = "transparent";

		/// <summary>
		/// 文字本身的阴影长度。
		/// </summary>
		public dynamic textShadowBlur { get; set; }  = 0;

		/// <summary>
		/// 文字本身的阴影 X 偏移。
		/// </summary>
		public dynamic textShadowOffsetX { get; set; }  = 0;

		/// <summary>
		/// 文字本身的阴影 Y 偏移。
		/// </summary>
		public dynamic textShadowOffsetY { get; set; }  = 0;

		/// <summary>
		/// axisPointer内边距，单位px，默认各方向内边距为5，接受数组分别设定上右下左边距。
		/// <para>string/Array</para>
		/// </summary>
		public dynamic padding { get; set; }  = "[5, 7, 5, 7]";

		/// <summary>
		/// 文本标签的背景颜色，默认是和 axis.axisLine.lineStyle.color
		/// <para>
		/// #xAxis.axisLine.lineStyle.color 相同
		/// </para>
		/// </summary>
		public dynamic backgroundColor { get; set; }  = "auto";

		/// <summary>
		/// 文本标签的边框颜色。
		/// </summary>
		public dynamic borderColor { get; set; } 

		/// <summary>
		/// 文本标签的边框宽度。
		/// </summary>
		public dynamic borderWidth { get; set; }  = 0;

		/// <summary>
		/// 图形阴影的模糊大小
		/// <para>
		/// 该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果
		/// </para>
		/// </summary>
		public dynamic shadowBlur { get; set; }  = 3;

		/// <summary>
		/// 阴影颜色。支持的格式同color。
		/// </summary>
		public dynamic shadowColor { get; set; }  = "#aaa";

		/// <summary>
		/// 阴影水平方向上的偏移距离。
		/// </summary>
		public dynamic shadowOffsetX { get; set; }  = 0;

		/// <summary>
		/// 阴影垂直方向上的偏移距离。
		/// </summary>
		public dynamic shadowOffsetY { get; set; }  = 0;

	}
}